package Pacote1;

import grails.test.*
import les.*

class ConjugesTests extends functionaltestplugin.FunctionalTestCase {
	
	void testAdicionarConjugeJaNaCriacaoDoIntegrante() {
		get ("/usuario/login")
		
		form() {
			email = "encontrosejc@gmail.com"
			senha = "123456"
			click "entrar"
		}
		
		get ("/integrante/create")
				
		form() {
			nome = "novo integrante"
			click "create"
		}
		
		get ("/integrante/create")
		
		form() {
			nome = "esposa do novo integrante"
			sexo = "F"
			temConjuge = "sim"
			conjuge = "novo integrante"
			click "create"
		}
		
		get ("/integrante/list")
		
		click "listarTodos"
		
		assertContentContains "esposa do novo integrante</a></td><td>F</td><td>novo integrante</td>"
		assertContentContains "novo integrante</a></td><td>M</td><td>esposa do novo integrante</td>"
	}
	
	void testAdicionarConjugeDepoisDaCriacaoDoIntegrante() {
		get ("/usuario/login")
		
		form() {
			email = "encontrosejc@gmail.com"
			senha = "123456"
			click "entrar"
		}
		
		get ("/integrante/create")
				
		form() {
			nome = "novo integrante 2"
			click "create"
		}
		
		get ("/integrante/create")
		
		form() {
			nome = "esposa do novo integrante 2"
			sexo = "F"
			click "create"
		}
		
		get ("/integrante/list")
		
		click "esposa do novo integrante 2"
		
		click "edit"
		
		form() {
			temConjuge = "sim"
			conjuge = "novo integrante 2"
			click "salvar"
		}
		
		get ("/integrante/list")
		
		click "listarTodos"
		
		assertContentContains "esposa do novo integrante 2</a></td><td>F</td><td>novo integrante 2</td>"
		assertContentContains "novo integrante 2</a></td><td>M</td><td>esposa do novo integrante 2</td>"
	}
	
	void testSeRemoverUmIntegranteQueEhConjugeDeOutroSetaParaNullOConjugeDoOutro() {
		get ("/usuario/login")
		
		form() {
			email = "encontrosejc@gmail.com"
			senha = "123456"
			click "entrar"
		}
		
		get ("/integrante/create")
				
		form() {
			nome = "novo integrante 3"
			click "create"
		}
		
		get ("/integrante/create")
		
		form() {
			nome = "esposa do novo integrante 3"
			sexo = "F"
			temConjuge = "sim"
			conjuge = "novo integrante 3"
			click "create"
		}
		
		get ("/integrante/list")
		
		click "listarTodos"
		
		assertContentContains "novo integrante 3</a></td><td>M</td><td>esposa do novo integrante 3</td>"
		assertContentContains "esposa do novo integrante 3</a></td><td>F</td><td>novo integrante 3</td>"
		
		click "esposa do novo integrante 3"
		
		setJavaScriptEnabled(false)
		
		click "deletar"
		
		get ("/integrante/list")
		
		click "listarTodos"
		
		assertContentContains "novo integrante 3</a></td><td>M</td><td></td>"
		
	}
	
	void testSeAlterarOConjugeDeUmIntegranteSetaNullNoConjugeDoOutro() {
		get ("/usuario/login")
		
		form() {
			email = "encontrosejc@gmail.com"
			senha = "123456"
			click "entrar"
		}
		
		get ("/integrante/create")
				
		form() {
			nome = "novo integrante 4"
			click "create"
		}
		
		get ("/integrante/create")
		
		form() {
			nome = "conjuge substituto"
			click "create"
		}
		
		get ("/integrante/create")
		
		form() {
			nome = "esposa do novo integrante 4"
			sexo = "F"
			temConjuge = "sim"
			conjuge = "novo integrante 4"
			click "create"
		}
		
		get ("/integrante/list")
		
		click "listarTodos"
		
		assertContentContains "novo integrante 4</a></td><td>M</td><td>esposa do novo integrante 4</td>"
		assertContentContains "esposa do novo integrante 4</a></td><td>F</td><td>novo integrante 4</td>"
		
		click "esposa do novo integrante 4"
		
		click "edit"
		
		form() {
			conjuge = "conjuge substituto"
			click "salvar"
		}
		
		get ("/integrante/list")
		
		click "listarTodos"
				
		assertContentContains "novo integrante 4</a></td><td>M</td><td></td>"
		assertContentContains "esposa do novo integrante 4</a></td><td>F</td><td>conjuge substituto</td>"
		assertContentContains "conjuge substituto</a></td><td>M</td><td>esposa do novo integrante 4</td>"
				
	}
	
		
}
